package com.itheima.dao;

import com.itheima.pojo.Menu;

import java.util.List;

/**
 * 菜单dao层
 * @author
 * @version 1.0
 */
public interface MenuDao {
    /**
     * 根据用户名查询菜单列表
     * @param username 用户名
     */
    List<Menu> getMenu(String username);
    /**
     * 根据查询条件获得菜单列表
     * @param queryString 查询条件
     * @return 菜单列表
     */
    List<Menu> findListByCondition(String queryString);

    /**
     * 根据父菜单id得到所有子菜单
     */
    List<Menu> findChildrenListByParentId(Integer parentId);

    /**
     * 根据id获得menu对象
     * @param id menu id
     * @return menu 对象
     */
    Menu findById(Integer id);

    /**
     * 编辑菜单信息
     * @param menu 菜单信息
     */
    void edit(Menu menu);

    /**
     * 根据id获得子菜单数量
     * @param id id
     * @return 子菜单数量
     */
    int findChildrenCountByParentId(Integer id);

    /**
     * 根据id删除菜单信息
     * @param id id
     */
    void delete(Integer id);

    /**
     * 查找最大的Path 在父标签中
     * @return 最大Path值
     */
    String findMaxPathOnParentMenu();

    /**
     * 查找最大的Priority 在父标签中
     * @return 最大Path值
     */
    Integer findMaxPriorityOnParentMenu();

    /**
     * 查找最大的Priority根据ParentMenuId
     * @return ParentMenuId
     */
    Integer findMaxPriorityByParentMenuId();


    /**
     * 添加菜单信息对象
     * @param menu 菜单信息
     */
    void add(Menu menu);

    /**
     * 获取全部菜单信息,只获得 id name description children
     * @return 菜单列表
     */
    List<Menu> findAll();

    /**
     * 根据父菜单id得到所有子菜单,只获得 id name description children
     */
    List<Menu> findChildrenListByParentIdByFindAll(Integer parentMenuId);

    /**
     * 根据RoleId获得所有菜单权限Id列表
     */
    List<Integer> findMenuIdsByRoleId(Integer roleId);

    /**
     * 根绝id获得角色数量
     * @param id
     */
    int findRoleUseCount(Integer id);
}
